vue中复用组件时出现的数据被覆盖问题~已解决 | 您所在的位置:网站首页 › vue 图表最后加载 › vue中复用组件时出现的数据被覆盖问题~已解决 |
vue中复用组件时出现的数据被覆盖的问题~已解决
项目需要,写了一个能够复用的Cascader 组件,偶然间发现了一个久远的bug… 我此时的Cascader 组件并没有加懒加载。 demo复现: 在一个页面中放入两个一模一样的组件,第一个组件始终没有数据,然而第二个时有数据展现的: 第二个组件明明是有数据的,可偏偏第一个没有; 代码粘上: {{ data.title }} ({{ data.children.length }}) getTree(){ self.$post('get_company_tree',{id: 1, type:1}).then(res=>{ self.treeListPeople = JSON.parse(JSON.stringify(res.data)); }).catch(err=>{}) },后来在网上一通的搜啊,大部分说的是使用这种方式解决: 默认按钮 主要按钮试过之后并没有解决我的问题,然后又是一通的搜,路漫漫其修远兮…人生路~ 在网上就根本没有我的这个问题!!! 那一天,天气格外的晴朗, 日光透过窗户打在了我消瘦的脸上, 就像 佛光普照, 突然 灵光一闪… 大脑一片空白, 仿佛有几个字符出现在我的脑海中… this 就是它… 就是它 在我脑海中不断出现的就是它—— “this” …会不会是两个组件共用了一个this导致数据被覆盖了呢,因为我代码中确实写了self, created () { self = this; },关键是这一句: self.treeListPeople = JSON.parse(JSON.stringify(res.data));把self直接换成this就可以了。 this.treeListPeople = JSON.parse(JSON.stringify(res.data));终于解决了! 哈哈哈,世上无难事,只怕有心人。 原来是因为我加载组件created时把this赋值给了self, 所以两个组件共用了一个this, 才会出现只有一个组件有数据的问题。 在组件中的this指向的是当前组件本身,不能共用,如果想数据共享的话当我没说。 所以子组件中重新修改this指向 要慎重!! 特此记录~ 以上是我的个人总结和观点,不对的地方大家指出来,方便共同进步~~ |
CopyRight 2018-2019 实验室设备网 版权所有 |